package com.xmut.mall.member.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xmut.mall.member.entity.MemberCartEntity;
import com.xmut.mall.member.utils.RespBean;
import com.xmut.mall.member.vo.CartVo;

import java.util.List;
import java.util.Map;

public interface MemberCartService extends IService<MemberCartEntity> {
    /**
     * 添加购物车
     * @param entity
     * @return
     */
    RespBean addCart(MemberCartEntity entity);

    /**
     * 根据用户Id获取该用户的购物车列表
     * @param memberId
     * @return
     */
    List<MemberCartEntity> getCart(Long memberId);

    /**
     * 获取购物车数量
     * @param memberId
     * @return
     */
    Integer cartCount(Long memberId);

    /**
     * 删除购物车的商品
     * @param memberId
     * @param skuId
     * @return
     */
    RespBean deleteCartItem(Long memberId, Long skuId);

    /**
     * 购物车详情页
     * @param userInfo
     * @return
     */
    List<CartVo> goCart(Long userInfo);

    /**
     * 购物车操作 全选
     * @param memberId
     * @return
     */
    RespBean checkAll(Long memberId,Long check);

    /**
     * 购物车操作全选 根据商铺
     * @return
     */
    RespBean checkAllByStore(Map<String,Object> params);

    /**
     * 购物车操作 选中或取消单个商品
     * @param params
     * @return
     */
    RespBean checkSingleItem(Map<String, Object> params);

    /**
     * 改变购物车项选中的数量
     * @param params
     * @return
     */
    RespBean changeCartItemNum(Map<String, Object> params);

    /**
     * 根据map删除购物车之中的项
     * @param params
     * @return
     */
    RespBean deleteCartItemByMap(Map<String, Object> params);

    /**
     * 清空购物车
     * @param memberId
     * @return
     */
    RespBean clearCart(Long memberId);

    /**
     * 获取当前购物车的结算信息
     * @param memberId
     * @return
     */
    RespBean getCartPriceDetail(Long memberId);

    /**
     * 获取商品结算详情(购物车方式进行结算)
     * @param params
     * @return
     */
    RespBean getGoodPayDetailTypeCART(Map<String, Object> params);

    /**
     * 获取用户购物车中目前选中的购物车项的信息
     * @param params
     * @return
     */
    List<CartVo> getUserCheckedCartItem(Map<String, Object> params);

    /**
     * 获取用户购物车中进行结算的购物车项
     * @param userId
     * @return
     */
    List<MemberCartEntity> getUserCheckedCartEntityItem(Long userId);
}
